#ifndef TEST_PY_MANDATORY_H
#define TEST_PY_MANDATORY_H
#include <type_traits>

namespace mcgpp {
  namespace meta {
    struct unspecified_type;

    template <typename SomeType>
    class MandatoryTemplateArgument {
      struct private_type;

      static_assert(std::is_same<SomeType, private_type>::value,
                    "You forgot to specify a mandatory template argument which cannot be deduced.");
    };
  }  // namespace meta
}  // namespace kahypar

using Mandatory = mcgpp::meta::MandatoryTemplateArgument<mcgpp::meta::unspecified_type>;

template <typename T>
using MandatoryTemplate = mcgpp::meta::MandatoryTemplateArgument<T>;
#endif //TEST_PY_MANDATORY_H
